ডায়নামিক টাইপিং এবং dynamic কীওয়ার্ড

Microsoft Technologies - সি শার্প (C#) - অ্যাডভান্সড টপিকস | NCTB BOOK

ডায়নামিক টাইপিং এবং dynamic কীওয়ার্ড C# এ প্রোগ্রামিংকে আরও ফ্লেক্সিবল এবং ডায়নামিক করে তোলে। ডায়নামিক টাইপিং হলো একটি প্রক্রিয়া, যার মাধ্যমে ভেরিয়েবলের টাইপ কম্পাইল টাইমে নির্ধারণ না হয়ে রানটাইমে নির্ধারিত হয়। C# এ dynamic কীওয়ার্ড ব্যবহার করে ডায়নামিক টাইপিং করা যায়, যার ফলে কম্পাইলার সেই ভেরিয়েবলের টাইপ চেক করে না বরং তা রানটাইমে চেক করা হয়।

dynamic কীওয়ার্ড

dynamic কীওয়ার্ড দিয়ে ডায়নামিক টাইপের ভেরিয়েবল ডিক্লেয়ার করা হয়। এটি যেকোনো টাইপের মান ধারণ করতে পারে এবং এর মান যেকোনো সময় পরিবর্তন করা যেতে পারে। তবে, কম্পাইল টাইমে টাইপ চেক না হওয়ায় ভেরিয়েবলে টাইপ-সংক্রান্ত কোনো ত্রুটি থাকলেও তা রানটাইমে চিহ্নিত হয়।

dynamic variable = "Hello, World!";
Console.WriteLine(variable); // Output: Hello, World!

variable = 10; // String থেকে Int এ পরিবর্তন করা হয়েছে
Console.WriteLine(variable); // Output: 10

ব্যাখ্যা

  • প্রথমে variable ভেরিয়েবলে একটি string মান অ্যাসাইন করা হয়েছে।
  • এরপর সেটিতে int মান অ্যাসাইন করা হয়েছে। যেহেতু এটি dynamic টাইপের, তাই বিভিন্ন টাইপের মান সেট করা যায়।
  • C# কম্পাইলার dynamic টাইপের ভেরিয়েবল চেক করে না, বরং রানটাইমে ভেরিয়েবলের টাইপ চেক করে।

dynamic এবং object এর মধ্যে পার্থক্য

dynamic এবং object টাইপের মধ্যে কিছু মৌলিক পার্থক্য আছে:

  1. object টাইপের ক্ষেত্রে ভেরিয়েবলের টাইপ চেক কম্পাইল টাইমে হয় এবং মেথড বা প্রোপার্টিতে অ্যাক্সেস করার জন্য টাইপ কাস্ট করতে হয়।
  2. dynamic টাইপের ক্ষেত্রে টাইপ চেক রানটাইমে হয় এবং কোনো টাইপ কাস্ট ছাড়াই মেথড বা প্রোপার্টিতে অ্যাক্সেস করা যায়।
object obj = "Hello, World!";
Console.WriteLine(((string)obj).Length); // টাইপ কাস্ট প্রয়োজন

dynamic dyn = "Hello, World!";
Console.WriteLine(dyn.Length); // টাইপ কাস্ট প্রয়োজন নেই

dynamic কীওয়ার্ডের ব্যবহার

  1. COM Interoperability: COM (Component Object Model) অবজেক্ট ব্যবহার করার সময় dynamic কীওয়ার্ড ব্যবহার করলে সহজেই বিভিন্ন মেথড এবং প্রোপার্টিতে অ্যাক্সেস করা যায়।
  2. Reflection: রিফ্লেকশনের সাথে dynamic ব্যবহার করলে সহজেই প্রোপার্টি বা মেথড এক্সেস করা যায়।
  3. ExpandoObject: ExpandoObject ক্লাসের ক্ষেত্রে dynamic টাইপ ব্যবহার করা হয়, যাতে প্রোগ্রামের চলাকালীন নতুন প্রোপার্টি যোগ করা যায়।

উদাহরণ: COM Interoperability

ধরা যাক, আমরা একটি Excel অ্যাপ্লিকেশন রান করতে চাই। COM Interop এর মাধ্যমে dynamic ব্যবহার করে এটি করা যায়।

using System;
using Excel = Microsoft.Office.Interop.Excel;

public class Program
{
    public static void Main()
    {
        dynamic excelApp = new Excel.Application();
        excelApp.Visible = true;

        dynamic workbook = excelApp.Workbooks.Add();
        dynamic worksheet = workbook.Sheets[1];
        worksheet.Cells[1, 1].Value = "Hello, Excel!";
    }
}

ExpandoObject ব্যবহার করে dynamic অবজেক্ট তৈরি

ExpandoObject এর মাধ্যমে dynamic টাইপ ব্যবহার করে নতুন প্রোপার্টি যোগ করা যায়।

using System;
using System.Dynamic;

public class Program
{
    public static void Main()
    {
        dynamic person = new ExpandoObject();
        person.Name = "John";
        person.Age = 30;

        Console.WriteLine("Name: " + person.Name);
        Console.WriteLine("Age: " + person.Age);
    }
}

ব্যাখ্যা

  • ExpandoObject দিয়ে person নামে একটি dynamic অবজেক্ট তৈরি করা হয়েছে।
  • এরপর person অবজেক্টে Name এবং Age প্রোপার্টি ডায়নামিকভাবে যোগ করা হয়েছে।

dynamic এর সুবিধা

  1. টাইপ কাস্টিংয়ের প্রয়োজন নেই: টাইপ কাস্ট ছাড়াই মেথড এবং প্রোপার্টিতে অ্যাক্সেস করা যায়।
  2. COM ইন্টারঅপারেবিলিটি: COM অবজেক্টের সাথে কাজ করতে dynamic অনেক সহজ করে।
  3. ডায়নামিক প্রোগ্রামিং: প্রোগ্রামের চলাকালীন সময়ে নতুন প্রোপার্টি বা মেথড যোগ করা যায়।

dynamic এর অসুবিধা

  1. টাইপ সেফটি কমে: টাইপ সেফটি রানটাইমে নিশ্চিত হওয়ায় ভুলগুলো কম্পাইল টাইমে ধরা পড়ে না।
  2. পারফরম্যান্স হ্রাস: dynamic টাইপ রানটাইম টাইপ চেকের কারণে কিছুটা ধীরগতির হয়।
  3. রক্ষণাবেক্ষণ জটিলতা: dynamic ব্যবহার করলে প্রোগ্রাম বুঝতে কিছুটা কঠিন হতে পারে।

সংক্ষেপে

  • dynamic কীওয়ার্ড: C# এ ডায়নামিক টাইপের ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়, যা যেকোনো টাইপের মান ধারণ করতে পারে।
  • টাইপ চেকিং: dynamic টাইপের টাইপ চেক রানটাইমে হয়, ফলে টাইপ সেফটি কমে।
  • ব্যবহার: COM Interoperability, Reflection, এবং ExpandoObject এর সাথে ব্যবহার হয়।
  • সুবিধা: টাইপ কাস্টিংয়ের প্রয়োজন নেই এবং ডায়নামিক প্রোগ্রামিং সহজ করে।
  • অসুবিধা: টাইপ সেফটি এবং পারফরম্যান্স কমে যায়।

C# এ dynamic কীওয়ার্ড ব্যবহার করে ডায়নামিক প্রোগ্রামিং করা সহজ, তবে এটি ব্যবহারের ক্ষেত্রে সতর্ক থাকতে হয়, কারণ এটি টাইপ সেফটি কমিয়ে দেয় এবং পারফরম্যান্সেও কিছুটা প্রভাব ফেলতে পারে।

Content added By
Promotion